// cdn预加载使用
const externals = {
  'vue': 'Vue',
  'vuex': 'Vuex',
  'vue-router': 'VueRouter',
  'axios': 'axios',
  'element-ui': 'ELEMENT',
  'vue-i18n': 'VueI18n',
  'echarts': 'echarts' // 配置使用CDN
}


const cdn = {
  // 开发环境
  dev: {
    css: [
      'http://admin.bonoch.top/file/cdn/elementUI.css',
      'http://admin.bonoch.top/file/cdn/swiper.min.css'
    ],
    js: [
      // 'http://admin.bonoch.top/file/cdn/vue.min.js',
      'https://cdn.jsdelivr.net/npm/vue@2.6.14',
      'http://admin.bonoch.top/file/cdn/vue-router.min.js',
      'http://admin.bonoch.top/file/cdn/axios.min.js',
      'http://admin.bonoch.top/file/cdn/vuex.min.js',
      'http://admin.bonoch.top/file/cdn/echarts-en.common.js',
      'http://admin.bonoch.top/file/cdn/elementUI.js',
      'http://admin.bonoch.top/file/cdn/tinymce.min.js',
    ]
  },
  // 生产环境
  build: {
    css: [
      '/file/cdn/elementUI.css',
      '/file/cdn/swiper.min.css'
    ],
    js: [
      // '/file/cdn/vue.min.js',
      'https://cdn.jsdelivr.net/npm/vue@2.6.14',
      '/file/cdn/vue-router.min.js',
      '/file/cdn/axios.min.js',
      '/file/cdn/vuex.min.js',
      '/file/cdn/echarts-en.common.js',
      '/file/cdn/elementUI.js',
      '/file/cdn/tinymce.min.js',
    ]
  }
}

module.exports = {
  outputDir: 'dist',//打包输出文件夹
  lintOnSave: false,
  devServer:{
    port: 8089,
    proxy:'http://admin.bonoch.top',
    host:'admin.bonoch.top',
  },
  productionSourceMap: false, // 生产环境是否生成 sourceMap 文件
  chainWebpack: config => {
    /**
     * 删除懒加载模块的prefetch，降低带宽压力
     * https://cli.vuejs.org/zh/guide/html-and-static-assets.html#prefetch
     * 而且预渲染时生成的prefetch标签是modern版本的，低版本浏览器是不需要的
     */
    config.plugins.delete('prefetch')
    /**
     * 添加CDN参数到htmlWebpackPlugin配置中， 详见public/index.html 修改
     */
    config.plugin('html').tap(args => {
      if (process.env.NODE_ENV === 'production') {
        args[0].cdn = cdn.build
      }
      if (process.env.NODE_ENV === 'development') {
        args[0].cdn = cdn.dev
      }
      return args
    })
  },
  configureWebpack: (config) => { // 改webpack devtool 输出方式
    // const myConfig = {}
    config.externals = externals
    if (process.env.NODE_ENV === 'production') {
      // return {
      //   plugins: [
      //     new CompressionWebpackPlugin({
      //       filename: '[path].gz[query]',
      //       algorithm: 'gzip',
      //       test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
      //       threshold: 1024,
      //       minRatio: 0.8,
      //       deleteOriginalAssets: false // 不删除源文件
      //     })
      //   ]
      // }
    }
    if (process.env.NODE_ENV === 'development') {
      // 开发环境加载source-map
      config.devtool = 'source-map'
      // mutate config for production...
    }
    // return config
  }
}